#!/bin/bash

# 程序启动脚本

# 显示彩色输出
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color

# 找出jar文件
JAR_FILE=$(find . -maxdepth 1 -name "*.jar" | head -1)

if [ -z "$JAR_FILE" ]; then
    echo -e "${RED}错误: 当前目录下找不到JAR文件${NC}"
    exit 1
fi

# 获取应用名称
APP_NAME=$(basename "$JAR_FILE" .jar)
echo -e "${GREEN}找到应用程序: $APP_NAME${NC}"

# 检查参数
MODE="full"
if [ "$1" == "dev" ]; then
    MODE="dev"
fi

# 创建日志目录
mkdir -p logs

# 获取当前时间
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
LOG_FILE="logs/startup_${TIMESTAMP}.log"

# 输出启动信息
echo -e "${YELLOW}启动模式: $MODE${NC}"
echo -e "${YELLOW}日志文件: $LOG_FILE${NC}"

# 启动应用程序
if [ "$MODE" == "dev" ]; then
    echo -e "${GREEN}以开发模式启动应用程序 (无数据库连接)...${NC}"
    java -jar "$JAR_FILE" --spring.profiles.active=dev > "$LOG_FILE" 2>&1 &
else
    echo -e "${GREEN}以完整模式启动应用程序...${NC}"
    java -jar "$JAR_FILE" > "$LOG_FILE" 2>&1 &
fi

PID=$!
echo -e "${GREEN}应用程序已启动，PID: $PID${NC}"
echo "$PID" > app.pid

# 监控启动过程
echo -e "${YELLOW}正在监控启动过程，按Ctrl+C停止监控...${NC}"
tail -f "$LOG_FILE" &
TAIL_PID=$!

# 捕获中断信号
trap 'kill $TAIL_PID; echo -e "${GREEN}已停止日志监控，应用程序仍在运行${NC}"; exit 0' INT

# 等待日志监控进程结束
wait $TAIL_PID 